//
//  YDFMainViewController.swift
//  weibo20
//
//  Created by mac on 16/1/17.
//  Copyright © 2016年 tingyuyisheng. All rights reserved.
//

import UIKit

class YDFMainViewController: UITabBarController {

	@objc private func clickComposedButton() {
		print("你好")
	}

	override func viewDidLoad() {
		super.viewDidLoad()

		// 添加控制器，并不会创建 tabBar 中的按钮！
		// 懒加载是无处不在的，所有控件都是延迟创建的！
		addChildViewControllers()

		print(tabBar.subviews)

		setupComposedButton()
	}

	override func viewWillAppear(animated: Bool) {
		// 会创建 tabBar 中的所有控制器对应的按钮！
		super.viewWillAppear(animated)

		// 将撰写按钮弄到最前面
		tabBar.bringSubviewToFront(composedButton)
	}

	// MARK: - 懒加载控件
	private lazy var composedButton: UIButton = UIButton(
		imageName: "tabbar_compose_icon_add",
		backgroundImageName: "tabbar_compose_button")
}

// MARK: - 设置界面
extension YDFMainViewController {

	/// 设置撰写按钮
	private func setupComposedButton() {
		// 1. 添加按钮
		tabBar.addSubview(composedButton)
		// 2. 调整按钮
		let count = childViewControllers.count
		// 让按钮宽一点点，能够解决手指触摸的容错问题
		let w = tabBar.bounds.width / CGFloat(count) - 1
		composedButton.frame = CGRectInset(tabBar.bounds, 2 * w, 0)
		// 3. 添加监听方法
		composedButton.addTarget(self, action: "clickComposedButton", forControlEvents: .TouchUpInside)
	}

	// tabbar_home_highlighted

	private func addChildViewControllers() {
		// 首页
		addChildViewController(YDFHomeTableViewController(), title: "首页", imageName: "tabbar_home")
		// 消息
		addChildViewController(YDFMessageTableViewController(), title: "消息", imageName: "tabbar_message_center")
		addChildViewController(UIViewController())
		// 发现
		addChildViewController(YDFDiscoverTableViewController(), title: "发现", imageName: "tabbar_discover")
		// 我
		addChildViewController(YDFProfileTableViewController(), title: "我", imageName: "tabbar_profile")
	}

	// 抽取添加子控制器的方法

	private func addChildViewController(childController: UIViewController, title: String, imageName: String) {

		// 统一设置tabbar的主题颜色
		self.tabBar.tintColor = orangeColor

		// 设置导航控制器的根控制器
		let nav = UINavigationController(rootViewController: childController)
		// 设置navigation和tabbar的标题
		childController.title = title
		// 设置tabbar的图片
		childController.tabBarItem.image = UIImage(named: imageName)
		// 选中状态下的图片
//        childController.tabBarItem.selectedImage = UIImage(named: imageName + "_highlighted")
		// 添加控制器
		self.addChildViewController(nav)
	}
}